The present invention relates to redundant array of independent disk systems (RAID). More particularly the present invention relates to the creation of Logical Units (LUNs) in a RAID system and the mapping of information to the various RAID system disks.
RAID disk subsystems organize multiple disks into arrays, which appear to host applications as one or more virtual disks or LUNs. The RAID systems have historically provided extensive error recovery capabilities, including both ample disk storage space and the algorithms to maintain high degrees of data integrity and consistency. Moreover, in many situations RAID systems have also provided increased input/output (I/O) performance as multiple disks typically supply more information to a microprocessor in a shorter period of time than a single disk system.
The placement of files on the physical disks depends on the characteristics of the particular LUN for that file. That is, each file is associated with a LUN and each LUN is allocated different physical disk storage space. For example, during creation, a LUN may be allocated only one physical disk, and in that case, any file for that LUN is mapped only to the one physical disk. If a LUN is created to utilize two disks, then files may be mapped to either or both of the two disks. Typically, the disks in a RAID system are divided into logical blocks or segments. Each LUN is allocated a predetermined number of these segments. Although the segments may be physically located on different physical disks, the combination of segments related to a LUN, sometimes referred to as a virtual volume, appear to a host computer as a contiguous set of memory addresses as if each segment was on the same disk.
Typically, RAID algorithms provide redundant data to the array through the use of xe2x80x9cmapping,xe2x80x9d or distributing of both user data and redundant information across the available storage space. The redundant information may be an exact copy of the user data or error correcting code information derived from the user data. The redundant information may then be used at a later time to regenerate lost or corrupted information. RAID systems typically employ advanced RAID controllers to handle these functions.
Additionally, the RAID controllers may provide control for different RAID levels within one system for different LUNs and for isolation of different LUNs on separate physical disks. For example, some applications continuously update a xe2x80x9credoxe2x80x9d file, which is essentially a log of activity that can be used to regenerate lost information. As the redo file essentially provides secondary backup capabilities, it is typically stored using a RAID one level algorithm. Importantly, however, the LUN used for storing the redo file is typically kept separate from other LUNs that may also store other redo files. Similarly, archive files are also typically placed on separate disks from one another, and therefore different LUNs that use different physical disks are created for these files to keep the files separate.
The user information is typically stored in other groups of disks that generally provide some upper level of RAID having redundancy. As an example, if a data file is stored in one group of disks using a striping algorithm at RAID five level, then the file is divided into sections of a predetermined size, and each disk receives one or more of the sections. An extra disk receives redundant or parity information to provide for error recovery. For a particularly large file, there may be many xe2x80x9cstripesxe2x80x9d of information across the group of disks. Specific LUNs are typically created for user information. These LUNs may be created to allow for allocation of disk space on the same disks as those disks used for the redo and archive files. Alternatively the LUNs may be created to use disk space from other disks within the RAID system. Importantly, the process of creating the LUN allows for the selection of physical disks that will eventually provide storage space.
During the operation of a host application, certain files tend to be accessed more often than other files. For example, user information relating to indexes and tables for database applications tend to be accessed much more often than the redo or the archive log files within the database. Indeed, database administrators (DBAs) often use software tools to track the usage of particular files and the number of hits per disk which often leads to the determination that a particular group of disks is being hit more often then others. Once this determination is made, a LUN is often recreated, allocating different physical disk space for that LUN in an attempt to even the number of hits per disk. Typically, if the various disks are being accessed at the same rates, i.e., having the same number of hits per disk then the performance improves significantly. That is, since each disk has a characteristic I/O rate at which it can write and read information to and from a disk, then ideally, the optimal performance occurs when all disks are operating at their highest I/O rate.
Although recreating a LUN to even the hits per disk provides for increased performance, optimal performance is typically not achieved using this method due to one drawback. The way in which LUNs are created provides for a create statement that indicates the desired disks to be used and the amount of space to allocate. The RAID controller then allocates the same amount of disk space for each of the indicated disks to achieve the desired amount. If a higher level of RAID is indicated then disk space is allocated for the redundant information on one or all of the indicated disks. Importantly each of the indicated disks provides equal amounts of space for that LUN. Consequently however, since not all LUNs are divided equally among all disks, dividing a single LUN equally among the indicated disks does not provide for optimal performance.
As an example, assume LUN-1 is created to use three out of eight disks in a RAID system, and the files in this LUN receive sixty percent of the hits during operation. Also assume LUN-2 and LUN-3 have been created to use the other five disks and these files receive forty percent of the hits during operation. For the purposes of this example, assume that the LUN-2 and LUN-3 can not share disk space. Recreating LUN-1 to use all eight disks effectively spreads sixty percent of the hits across all eight disks, but does not optimize performance because five disks will receive fifteen and one half percent of the hits whereas the other three disks only receive seven and one half percent of the hits. Since three disks are operating at approximately one-half the rate of the other disks, optimal performance has not been achieved.
It is with respect to these considerations and others that the present invention has been made.
The above described difficulties encountered with conventional systems are overcome by the present invention by providing a high level control system that selectively creates logical units (LUNs), allocating proportional amounts of disk storage space to each disk used by the LUN. Proportional allocation of disk space for different LUNs allows for the selective mapping of more data from the LUN to be mapped to some of the different disks to better optimize the I/O performance in a RAID system.
In accordance with preferred aspects, the present invention relates to a method of creating a logical unit in a redundant array of independent disks (RAID) system by first dividing the logical unit into a plurality segments, allocating segments to a set of disks, and then allocating additional segments to a second set of one or more disks, where the second set of disks is a subset of the first set of disks, such that the second set of disks is allocated more segments than the first set of disks. The method involves the receipt of a proportional create statement wherein the create statement comprises a parameter list of disks and the number of segments to be allocated to each disk for each group. The method may also involve the parsing of the create statement to determine a group size value and a group members value. Additionally, the method involves generating a table that associates the physical disk for each segment to its corresponding logical address of the LUN. The table is then used to access data in the logical unit.
In accordance with other preferred aspects, the present invention relates to a method of improving the performance of a RAID system wherein the system has at least one logical unit that has been allocated disk space on less than all of disks, the method involving the analysis of the utilization of the plurality of disks, the determination of available disk space, the determination as to whether the available disk space can contain new information, and the creation of a new logical unit using proportional mapping. The creation of a new logical unit allocates at least some information from the new logical unit to the disks previously determined to have available space and at least one disk is allocated more segments for the new logical unit than another disk having at least one segment for the new logical unit. The method also includes the creation of a conversion memory map for converting logical block addresses to physical addresses.
In accordance with yet other aspects, the present invention relates to a RAID system having a plurality of physical disks forming an array, a controller connected to the array of disks for controlling the allocation of data on the physical disks and a host computer system connected to the controller. The information on the array is presented to the host computer system as one or more virtual disks and information in the virtual disk is proportionally mapped to the array. With respect to preferred aspects, the module comprises a computer program of instructions for executing a computer process for proportionally mapping at least one virtual disk to the array. Additionally, the controller further comprises a computer readable medium for storing the module and a microprocessor for executing the computer process.
A more complete appreciation of the present invention and its improvements can be obtained by reference to the accompanying drawings, which are briefly summarized below, to the following detail description of presently preferred embodiments of the invention, and to the appended claims.